/*
 * AbstractFactory.h
 *
 *  Created on: Nov 27, 2010
 *      Author: timmeh
 */

#ifndef ABSTRACTFACTORY_H_
#define ABSTRACTFACTORY_H_

#include "Ball.h"
#include "Breakable.h"
#include "Entity.h"
#include "Paddle.h"
#include "PowerUp.h"
using namespace bo;

/**
 * Interface class, provides a base to derive a concrete factory
 */
class AbstractFactory {
public:
	virtual Ball* CreateBall(const char*, double, double, double, double, const double) = 0;
	virtual Breakable* CreateBreakable(const char*, double, double, const double) = 0;
	virtual Paddle* CreatePaddle(const char*, double, double, const double, const double) = 0;
	virtual PowerUp* CreatePowerUp(const char* fileName, const double x, const double y) = 0;
};

#endif /* ABSTRACTFACTORY_H_ */
